/*
 * table_LinkTypeInfo.h
 *
 *  Created on: 2012/03/29
 *      Author: guanxiaoying
 */

#ifndef TABLE_LINKTYPEINFO_H_
#define TABLE_LINKTYPEINFO_H_


typedef struct {
	BOOL (*clear)( VOID );
	BOOL (*reset)( VOID );
	BOOL (*alloc)( AST );
	BOOL (*copy)( AST, AST, AST );
	AST  (*getMax)( VOID );
//	USHORT_TYPEKIND
	ACCESS_U2_FIELD typeKind;
//	USHORT_SIGNFLG
	ACCESS_U2_FIELD signFlag;
//	USHORT_LONGSHORT
	ACCESS_U2_FIELD longShortFlg;
//	USHORT_INTFLOAT
	ACCESS_U2_FIELD intFloat;
//	USHORT_TYPEQUAL
	ACCESS_U2_FIELD typeQual;
//	U4_SIZE
	ACCESS_U4_FIELD size;
//	IDX_TYPEDEFINFO
	ACCESS_IDX_FIELD elementType;
//	IDX_TYPEDEFINFO
	ACCESS_IDX_FIELD noQualType;
//	IDX_DEFCHAIN
	ACCESS_IDX_FIELD memChain;
//	IDX_SYMDEFINFO
	ACCESS_STR_FIELD tagName;
	ACCESS_IDX_FIELD next;
	ACCESS_IDX_FIELD cnter;
	ACCESS_BOOL_FIELD  bSizeUnDefined;
	ACCESS_BOOL_FIELD  bVariableSize;
	AST  (*findType)( VOID* pdata, S4 (*comp)( AST, VOID* ));
	AST  (*addTypeInfo)( AST astLinkType, VOID* pdata, S4 (*comp)( AST, VOID* ));
}LINKTYPEINFO_ACCESS;
extern const LINKTYPEINFO_ACCESS stLinkTypeInfoAccess;


#endif /* TABLE_LINKTYPEINFO_H_ */
